package com.yidu.BusinessData.controller;

import com.yidu.BusinessData.entity.MarketData;
import com.yidu.BusinessData.service.MarketDataService;
import com.yidu.BusinessData.util.IdUtil;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 *
 * 行情数据的控制层
 *
 * @author 任俊杰
 * @version 1.0
 * @date 2022/12/5
 */
@RestController
public class MarketController {
    @Resource
    private MarketDataService marketDataService;


    /**
     * 查询加分页
     *
     * @param page       当前页
     * @param limit      每页显示数
     * @param securityId 查询条件 证券id
     * @param time       查询条件 时间
     * @return map 返回一个集合
     */
    @RequestMapping("selectMarket")
    public Map selectMarket(int page, int limit, String securityId, String time) {
        //判断证券id，如果它为空则赋值为空
        if (securityId == null) {
            securityId = "";
        }
        //判断时间，如果为空则赋值为空
        if (time == null) {
            time = "";
        }
        //调用查询所有行情数据的方法
        List<MarketData> marketDataList = marketDataService.selectMarket(page, limit, '%' + securityId + '%', '%' + time + '%');

        //调用查询行情数据行数的方法
        int count = marketDataService.selectMarketCount('%' + securityId + '%', '%' + time + '%');

        Map map = new HashMap();
        map.put("code", 0);
        map.put("msg", "");
        map.put("count", count);
        map.put("data", marketDataList);
        return map;
    }


    /**
     * 删除（包括多个删除和单个删除）
     * @param marketId 行情数据id
     * @return i 受影响的行数
     */
    @RequestMapping("deleteMarket")
    public int deleteMarket(String marketId) {
        System.out.println("进来了删除的方法");
        //调用删除行情数据的方法
        int i = marketDataService.deleteMarket(marketId);
        if (i > 0) {
            System.out.println("删除成功");
        } else {
            System.out.println("删除失败");
        }
        return i;
    }


    /**
     * 行情数据添加
     *
     * @param marketData 行情数据实体类
     * @return i 受影响的行数
     */
    @RequestMapping("addMarket")
    public int addMarket(MarketData marketData, String time) {
        //调用查询最大id的方法
        String maxFundId = marketDataService.selectMaxFundId();
        //提供id工具类
        IdUtil idUtil = new IdUtil();
        //得到一个新的id，加1后的id
        //调用id工具类方法
        String id = idUtil.createID(maxFundId);
        //new对象
        MarketData marketData1 = new MarketData(id, marketData.getSecurityId(), time, marketData.getOpeningPrice(), marketData.getClosingPrice(), marketData.getFundId(), marketData.getRemark());
        //调用新增行情数据的方法
        int i = marketDataService.addMarket(marketData1);
        if (i > 0) {
            System.out.println("添加成功");
        } else {
            System.out.println("添加失败");
        }
        return i;
    }


    /**
     * 行情数据修改
     * @param marketData 修改的行情对象
     * @param time 时间
     * @return i 受影响的行数
     */
    @RequestMapping("updateMarket")
    public int updateMarket(MarketData marketData,String time) {
        System.out.println("进来了修改的方法");
        //new 对象 无基金id
        MarketData marketData1=new MarketData(marketData.getSecurityId(),time,marketData.getOpeningPrice(),marketData.getClosingPrice(),marketData.getRemark(),marketData.getMarketId());
        //调用行情数据修改的方法
        int i = marketDataService.updateMarket(marketData1);
        if (i > 0) {
            System.out.println("修改成功");
        } else {
            System.out.println("修改失败");
        }
        return i;
    }


    /**
     * 下拉表格的查询证券信息
     * @param page 当前页
     * @param limit 每页显示数
     * @param securityName 证券名称
     * @return list 集合
     */
    @RequestMapping("selectSecurity")
    public Map selectSecurity(int page, int limit, String securityName) {
        //调用查询下拉表格的查询证券信息的方法
        return marketDataService.selectSecurity(page,limit,securityName);
    }

}
